package com.conversor;

import java.math.BigDecimal;
import java.text.DecimalFormat;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.Toast;

import com.core.Comprimento.ComprimentoBase;
import com.core.Comprimento.ComprimentoFactory;
import com.core.Massa.MassaBase;
import com.core.Massa.MassaFactory;
import com.core.enumerators.ComprimentoType;
import com.core.enumerators.MassaType;

public class ComprimentoActivity extends ActivityBase {
	private ComprimentoType tipoSelecionadoEnum;
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.comprimento);       
                
        this.FillSpinner(R.id.dropComp,tiposComprimentoGrid);
        
        //Metodo do Spinner para capturar o item selecionado
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
        	        	        	
        	@Override
        	public void onNothingSelected(AdapterView<?> parent){
        		
        	}

			@Override
			public void onItemSelected(AdapterView<?> parent, View v , int posicao, long id) {
				// //Pega nome pela posicao
				tipoSelecionado = parent.getItemAtPosition(posicao).toString();
        		//Imprime um Toast na tela com o nome que foi selecionado
        		//Toast.makeText(ComprimentoActivity.this, "Tipo Selecionado:" + tipoSelecionado, Toast.LENGTH_LONG).show();
        		        		        		
        		if(tipoSelecionado.equals(ComprimentoType.Milimetro.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Milimetro;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Centimetro.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Centimetro;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Metro.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Metro;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Quilometro.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Quilometro;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Jarda.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Jarda;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Pe.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Pe;
        		}
        		if(tipoSelecionado.equals(ComprimentoType.Polegada.toString())){
        			tipoSelecionadoEnum = ComprimentoType.Polegada;
        		}
        		   		
			}        	
        });               
        FillTableLayout();
    }    
    
    /**
     * Fill TableLayout with values converted.
     */
    private void FillTableLayout(){
    	FillTableLayout("");
    }
    
    /**
     * Fill TableLayout with values converted.
     * @param valueToBeConverted
     */
    private void FillTableLayout(String valueToBeConverted){
    	
    	String valueConverted = "";
    	//Initialize The Table Layout.
    	InitializeTableLayoutById(R.id.tblComp);
        
        ComprimentoBase tempObject = null; 
        if(!valueToBeConverted.equals("")){
        	tempObject = ComprimentoFactory.Create(tipoSelecionadoEnum, Float.parseFloat(valueToBeConverted));
                				
	        // Go through each item in the array
	        for (int current = 0; current < QuantidadeTipoComprimento; current++)
	        {        	   
	        	if(!tiposComprimentoGrid[current].equals(tipoSelecionadoEnum.toString())){
	        		
	        		if(tiposComprimentoGrid[current].equals(ComprimentoType.Milimetro.toString())){
	        			valueConverted = Double.toString(tempObject.ToMilimetro());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Centimetro.toString())){
	        			valueConverted = Double.toString(tempObject.ToCentimetro());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Metro.toString())){
	        			valueConverted = Double.toString(tempObject.ToMetro());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Quilometro.toString())){
	        			valueConverted = Double.toString(tempObject.ToQuilometro());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Jarda.toString())){
	        			valueConverted = Double.toString(tempObject.ToJarda());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Pe.toString())){
	        			valueConverted = Double.toString(tempObject.ToPe());
	        		}
	        		else if(tiposComprimentoGrid[current].equals(ComprimentoType.Polegada.toString())){	        				        			
	        			valueConverted = Double.toString(tempObject.ToPolegada());	        			
	        		}
	        		
	        		
	        		//Fill the TableLayout(Row) with a value converted.
	        		FillTableRow(this, valueConverted, tiposComprimentoGrid[current], current);     
	        	}
	        }   
        }
    }
    
    /**
     * Called when the user clicks the Send button, Method to Convert the value.
     * @param view
     */
    public void Converter(View view) {    	
    	EditText editText = (EditText) findViewById(R.id.txtComp);
    	String message = editText.getText().toString();
    	if(!message.equals("")){
			//Toast.makeText(TemperaturaActivity.this, "Tipo Selecionado:" + message, Toast.LENGTH_LONG).show();
			FillTableLayout(message);
    	}else{
    		Toast.makeText(ComprimentoActivity.this, "Coloque um valor para ser convertido.", Toast.LENGTH_LONG).show();
    	}    	
    }    
}
